Repository navigation
fix(flow): 修复视频取媒体地址用错 id - #183
Merged
TheSmallHanCat merged 1 commit intoSep 30, 2026
Merged
Conversation
视频生成成功但取媒体地址失败:
```
HTTP 502
{"error":{"code":502,"message":"视频生成成功但获取媒体地址失败:
Flow frontend RPC rejected: rpc=as29s, code=[5]","status":"UNAVAILABLE"}}
```
生成本身成功,挂在 as29s 这一步。
与 TheSmallHanCat#182 那两处不同:这次参数结构没有错。as29s 的 argument 仍是
单元素 UUID 列表,bl / f.sid / source-path 也都与前端一致。错的是值——
as29s 按「生成操作 id」索引,而 _resolve_video_asset 的取值优先级把
mediaName 排在了第一位。
一个 operation 里同时存在两个不同 UUID:
- mediaGenerationId / operation.name —— as29s 要的是这个
- mediaName —— 传它就 NOT_FOUND
2x2 组合实测(同一 media,仅换 id 与 source-path):
| 传入 id | source-path | 结果 |
|---|---|---|
| mediaName | /project/{id} | code=[5] |
| mediaName | /project/{id}/edit/{media} | code=[5] |
| operation.name | /project/{id} | 返回 fifeUrl |
| operation.name | /project/{id}/edit/{media} | 返回 fifeUrl |
可见 source-path 两种都通,唯一的变量就是 id。
附带收益:video_media_id 的兜底值也一并修正。返回的 URL 形如
/video/<operation.name>,故 extend:// 续写引用的正是该 id,
此前兜底会给出一个取不到媒体的 mediaName。
定位手法(可复用,无需重跑生成):把 operation dump 出来,拿到全部候选
UUID,再直接对 as29s 打点组合。比重跑一次视频生成快一个量级。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
问题
视频生成成功,但取媒体地址这步失败:
生成本身成功,挂在
as29s。这与 #182 的两处不同——这次参数结构没有错。根因
as29s的 argument 仍是单元素 UUID 列表,bl/f.sid/source-path也都与前端一致(逐一比对过)。错的是值。_resolve_video_asset的取值优先级把mediaName排在第一位,但一个 operation 里同时存在两个不同的 UUID:mediaGenerationId/operation.namea1607a19-…mediaName4a7b00b4-…证据
同一个 media,2×2 组合打点(仅换 id 与 source-path):
mediaName/project/{id}code=[5]mediaName/project/{id}/edit/{media}code=[5]operation.name/project/{id}operation.name/project/{id}/edit/{media}source-path两种都通,唯一的变量就是 id——所以不是结构问题。附带收益
video_media_id的兜底值也一并修正。返回的 URL 形如/video/<operation.name>,所以extend://续写引用的正是该 id,此前兜底会给出一个取不到媒体的mediaName。定位手法(可复用)
把 operation dump 出来拿到全部候选 UUID,再直接对
as29s打点组合,无需重跑一次视频生成。比重跑快一个量级,定位成本从「一次生成 + 猜」降到「几次秒级请求」。验证
fileDatatests/test_video_asset_resolution.py,锁住「传 generation id 而非 mediaName」与「metadata 缺失时回落到operation.name」python -m unittest discover -s tests全绿说明
与 #182 分开提:根因不同类(结构错 vs 取值错),验证成本也差一个量级——图片那处看结构论证即可判断,视频这处必须真跑一次生成,不宜让维护者为一个本身无争议的修复额外承担这个等待。
抓包与测试中用到的 UUID、project id 均为打码值,
flow.db里的 cookie 与 recaptcha token 未包含在本 PR 中。